基礎儀器無所不在

善用觸發/串列協定解碼模組 邏輯分析測試USB更容易

作者: 徐偉哲
2009 年 01 月 23 日

通用序列匯流排(USB)是很常見的串列協定。其具有熱插拔的特性,當USB裝置插入主機時,主機會自動偵測到,並且軟體會對其作規畫,且可隨插即用。USB的連接線供應裝置電源,可提供+5伏特直流電(DC)的電壓,電流供應約100~500毫安培。
 



USB的連接線共有四條,其中兩條是電源與地線,另兩條是訊號線,分別是D+與D-。一般情況下,兩條線的訊號相反,若其中一條的訊號為High,則另一條的訊號就為Low,此差動訊號能提升訊號抗雜訊抗干擾的能力,USB就是利用D+、D-兩條訊號線的差動訊號,達成高速傳輸的目的。
 



USB主機端在沒有裝置連接時,D+、D-上會有一個1.5kΩ的電阻接地,確保這兩條線是在接地狀態。可支援至一百二十七個位址,也就是說,一個USB系統最多支援一百二十七個裝置,主機會週期性的探詢每個集線器以便得知裝置的連接狀態。以USB1.1而言,其分為高速與低速兩個模式,低速傳輸率為1.5Mbit/s;高速為12Mbit/s,在高速模式時每個位元的寬度約83.3奈秒。
 



封包是組成USB傳輸的最小單位。在USB傳輸時負責替電腦主機(Host)端與集線器上的每一個USB裝置傳輸溝通,而邏輯分析儀可透過訊號抓取,協助工程師將訊號直接轉譯解碼並顯示於軟體中,讓使用者可以直接分析USB訊號。
 



使用邏輯分析儀 連接待測的USB裝置
 



本文範例中,待測物(DUT)為USB藍牙連接裝置(Bluetooth Dongle),即USB1.1,業界廠商推出的邏輯分析儀,可針對USB1.1模組製作相對應的測量治具(圖1),能幫助使用者省去繁雜的接線步驟,直接將待測物連接完成。將治具中的A Type連接埠接上待測物,B Type連接埠透過隨附USB線接上PC USB Host,並將邏輯分析儀的A0及A1通道藉由測試線連接至USB治具上的D-、D+,連接完成圖如圖2所示。


圖1 USB測量治具



圖2 待測物與邏輯分析儀連接圖



邏輯分析儀擁有多通道特性,只要剩餘通道足夠,即可在同時間內測量多組串列訊號,圖3為同時測量USB1.1訊號及I2C訊號的畫面。邏輯分析儀中內建的串列協定模組設定方便又快速,如圖4所示,使用者只須設定D+、D-的腳位及訊號速度,點下OK後就可以將USB訊號解碼。為更加方便分析以及提高效率,邏輯分析儀更在新版軟體中加入串列協定封包列表功能,能將串列訊號採取封包段落顯示,以直列方式顯示資料內容。


點圖放大
圖3 同時進行USB1.1及I2C串列協定訊號分析



圖4 USB串列協定模組



前面提到封包是組成USB傳輸的最小單位。一個交易(Transaction) 通常由三個封包組成,但依傳輸型態而定,一個Transaction可能包含一個、兩個、三個封包(圖5)。


圖5 USB1.1封包架構





記號封包
  每個Transaction以記號(Token)封包為起始。Token封包定義裝置、端點(Endpoint)數量,傳輸的方向。其中訊框起始(SOF)Token包含目前的訊框數,而且會廣播給所有的全速(Full-speed)裝置知道,SOF也是唯一一個不指定目標的Token,另外,Token封包長度固定為四個位元組(Byte)。




資料封包
  資料(Data)封包包含處理此動作的資料。一個Transaction中,Data封包最大的資料量為一千零二十三個位元組,實際允許的最大資料量取決於傳輸狀態。




交握封包
  除了即時型傳輸(Isochronous)外,所有的傳輸都保證資料的傳遞正確,如交握(Handshake)封包回應資料是否正確的被收到,若執行處理動作中發生錯誤,處理動作將重新執行。


圖6是同步序列(Synchronization Sequence)的波形,其由八個位元組成,數值是二進位的00000001, 依照NRZI編碼原理,資料0代表訊號要轉換,所以前七個0之中的每個位元都會在相對應的位元時間中轉換,作用就好像提供一組可用來同步的時脈(Clock)。Packet ID定義封包的目的與內容。封包主要有三種型態,即Token、Data與Handshake,其中Token封包定義傳輸的型態;Data封包接在Token之後,將傳輸的資料輸出或輸入USB裝置中;Handshake則是提供傳輸成功或失敗的訊息。


圖6 同步序列波形



Packet ID的訊號格式如圖7,總共有八個位元,前四個位元代表ID(Type Field),後四個位元是檢查欄位(Check Field),其值固定是ID的反向,如ID為二進位的1001,則檢查欄位就是0110,合起來就是10010110。


圖7 Packet ID訊號格式



USB定義四種封包種類
 



所有處理動作都是由一個Token封包開始,USB定義四種Token封包,包括SOF,IN,OUT,SETUP。




SOF封包
  USB裝置用SOF封包判斷訊框的起點。當每個訊框開始的時候,SOF封包被送至每個全速的裝置。即時型傳輸裝置可經由SOF封包達到同步傳輸的作用,低速裝置不支援即時型傳輸,所以SOF封包不會送至低速裝置,如圖8所示,SOF封包包含一個長度為11位元的訊框號碼,接收器使用5位元的CRC位元確認訊框號碼。SOF封包不含任何資料,其傳輸也不保證一定成功,當USB裝置對此SOF封包PID檢查碼錯誤時,裝置將忽略此封包;當CRC檢查錯誤時,會忽略此訊框號碼,須注意PID與訊框號碼都是LSB在前,MSB在後。圖9是一個SOF封包的實際波形,PID前四個位元0101就是SOF封包。PID之後的是11位元的訊框號碼,本例的訊框號碼是10101100010,換算為十進位就是1378,也就是第一千三百七十八個訊框。


圖8 SOF封包架構



圖9 SOF封包實際波形





IN封包
  所謂IN與OUT是指對於個人電腦而言,IN封包是個人電腦須由裝置讀進資料時使用;OUT則是個人電腦須送出資料給裝置時使用,IN封包可以使用在中斷型傳輸、巨量型傳輸、控制型傳輸的資料時期、即時型傳輸等傳輸。圖10是IN封包格式示意圖與實際量測圖,如圖所示,除了基本的Type欄位與Check欄位之外,IN封包包含7位元的裝置位址(Device Address)與4位元的端點號碼(Endpoint Number),執行IN封包動作時,首先個人電腦送出一個IN封包,接著裝置回傳一個資料封包,最後個人電腦送出一個交握封包給裝置,表示已收到資料,但在即時型傳輸中,IN處理動作不使用交握封包,而IN傳輸所能傳輸的資料量取決於傳輸型態。


圖10 IN封包格式示意圖與實際量測圖



圖11是一個實際的IN封包波形。PID的前4位元為1001,就是IN封包的ID,其次是7位元的位址(Address),這個例子的Address是1,再來是4位元的Endpoint,這個例子的Endpoint是0,最後是5位元的CRC。


圖11 IN封包實際波形





OUT封包
  當資料將被送出給某個裝置時,系統會進行一個OUT傳輸,有三種傳輸型態用到OUT傳輸,即巨量型傳輸、控制型傳輸的資料時期、即時型傳輸。OUT封包除了PID之外,其餘資料格式都與IN封包相同,一樣有7位元的Address,4位元的Endpoint(圖12)。


圖12 OUT封包格式示意圖與實際量測圖





SETUP封包
  SETUP封包只有在控制型傳輸的設定階段使用,SETUP處理動作啟動一個控制型傳輸,並且定義為設定階段,SETUP處理動作在形式上類似一個OUT動作,即為SETUP封包後跟著一個Data0封包與一個回覆封包。SETUP封包的目的是傳送一個要求給裝置執行,該封包除了PID外,其餘資料格式都與IN/OUT封包相同(圖13)。


圖13 SETUP封包格式示意圖與實際量測圖





Data0與Data1封包
  Data封包跟在IN、OUT、SETUP三種封包之後,IN封包之後的Data封包是將資料傳入個人電腦;OUT與SETUP之後的封包是將資料傳出給裝置。傳輸資料時,Data0封包與Data1封包是交互的使用,若此次傳輸資料是用Data0封包,則下次傳輸資料就是使用Data1封包,反之亦然,這是為用來當作同步機制使用,一個很大量的資料,會被切成多個小封包來傳輸,此時Data0與Data1封包交互的使用就可以當作一個同步的機制。圖14是Data0與Data1的封包格式,PID為1100就是Data0封包,PID為1011就是Data1封包。


圖14 Data0與Data1的封包格式





交握封包
  交握封包用來回報處理動作的完成狀況。交握封包有三種,包括ACK封包以確認資料正確無誤的被接收;NAK封包則告知主機現在目標裝置暫時無法接收或傳回資料;STALL封包為無法完成傳輸,且需軟體介入以便使裝置能從STALL狀態復原。圖15是三種交握封包的格式圖,交握封包沒有資料,也沒有CRC,只有SYNC與PID,ACK的PID是0010,NAK的PID是1010,STALL的PID是1110。


圖15 三種交握封包格式圖





前導封包
  前導封包(Preamble Packet)用在低速傳輸時。在傳送一個低速封包前,一個前導封包必須被送出,主機保證前導封包之後的封包是低速傳送,前導封包由一個SYNC與一個PID組成,PID是1100,有一點須注意的是,前導封包不可以EOP結尾。


串列協定封包觸發功能強 測試方式即可更精準
 



觸發功能越強大越能精準的觸發至正確的數值上,而串列協定封包觸發功能便是如此,僅須在設定視窗中設定串列協定中的狀態或是指定數值,透過軟體強大的功能便可正確的觸發至指定位置上,如設定觸發條件為USB1.1,訊號指定資料為0X1B時觸發,圖16為完成觸發時顯示的頁面。


點圖放大
圖16 完成觸發



串列協定常常被應用在嵌入式系統的設計中,但是若僅使用示波器分析這些訊號非常花時間,而個人電腦架構邏輯分析儀可提供工程師們更強大的觸發功能、多樣的串列協定解碼模組及便利的資料搜尋,讓工程師在開發產品時更能夠得心應手。
 



(本文作者任職於孕龍科技)
 


》想看更多內容?快來【免費加入會員】【登入會員】,享受更多閱讀文章的權限喔!
標籤
相關文章

智慧交錯技術問世 AC-DC電源效率再升級

2010 年 04 月 08 日

升壓驅動器搭配小電容設計 WLED背光音頻雜訊銳減

2015 年 07 月 12 日

高整合/低功耗應用處理器助威 穿戴式醫療裝置感測更精準

2015 年 07 月 25 日

INT8運算最佳化發功 嵌入視覺/深度學習效能大增

2018 年 06 月 04 日

自動駕駛要上路 測試/認證缺一不可

2019 年 11 月 14 日

頭戴式裝置過熱救星駕到 TCO電池保護更穩當

2022 年 10 月 27 日
前一篇
凌力爾特同步降壓穩壓器提供 6安培電流
下一篇
飛思卡爾維持通訊處理器市場龍頭地位